eventcontrollerkey: Add function to forward stuff elsewhere
authorCarlos Garnacho <carlosg@gnome.org>
Sun, 11 Mar 2018 12:38:19 +0000 (13:38 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Thu, 5 Apr 2018 17:26:54 +0000 (19:26 +0200)
gtk/gtkeventcontrollerkey.c
gtk/gtkeventcontrollerkey.h

index 922b147624effba05648ee0604ef5d8050fa5799..1b67966ec992b4930051bca6e502cc0b36564191 100644 (file)
@@ -21,7 +21,7 @@
 
 #include "gtkintl.h"
 #include "gtkprivate.h"
-#include "gtkwidget.h"
+#include "gtkwidgetprivate.h"
 #include "gtkeventcontrollerprivate.h"
 #include "gtkeventcontrollerkey.h"
 #include "gtkbindings.h"
@@ -216,3 +216,22 @@ gtk_event_controller_key_get_im_context (GtkEventControllerKey *controller)
 
   return controller->im_context;
 }
+
+gboolean
+gtk_event_controller_key_forward (GtkEventControllerKey *controller,
+                                  GtkWidget             *widget)
+{
+  g_return_val_if_fail (GTK_IS_EVENT_CONTROLLER_KEY (controller), FALSE);
+  g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
+  g_return_val_if_fail (controller->current_event != NULL, FALSE);
+
+  if (!gtk_widget_get_realized (widget))
+    gtk_widget_realize (widget);
+
+  if (_gtk_widget_captured_event (widget, controller->current_event))
+    return TRUE;
+  if (gtk_widget_event (widget, controller->current_event))
+    return TRUE;
+
+  return FALSE;
+}
index 0b3bcdebdb48323f06e82726fb219e6a54f11cfe..8bb95fc2f18e951be957564ea3b457d619574bad 100644 (file)
@@ -52,6 +52,10 @@ void                gtk_event_controller_key_set_im_context (GtkEventControllerK
 GDK_AVAILABLE_IN_ALL
 GtkIMContext *      gtk_event_controller_key_get_im_context (GtkEventControllerKey *controller);
 
+GDK_AVAILABLE_IN_ALL
+gboolean            gtk_event_controller_key_forward        (GtkEventControllerKey *controller,
+                                                             GtkWidget             *widget);
+
 G_END_DECLS
 
 #endif /* __GTK_EVENT_CONTROLLER_KEY_H__ */